#ifndef SMALL_BLOCK_H
#define SMALL_BLOCK_H

#include <iostream>
#include "Cell.h"

class SmallBlock
{
public:
    //Main Constructor
    SmallBlock( int newX, int newY, short inputMatrix[9] ) ;

    //Get X coord of this small block
    int getX() ;

    //Get Y coord of this small block
    int getY() ;

    //Get busy count of busy elements
    int getBusyElements() ;

    //Get Cell pointer
    Cell* getCell( const int& currX, const int& currY ) ;

    //!FIXME rename method
    short getElement( const int& currX, const int& currY ) ;

    //Pretty out (matrix)
    friend std::ostream& operator<<( std::ostream& out, SmallBlock block) ;

    //
    std::ostream& print( std::ostream& out) ;

    //Check rules
    //True all is good
    bool checkRules() ;

    bool allIsFilled() ;

    bool assumptionsIs() ;

private :
    int x ;
    int y ;
    Cell matrix[3][3] ;

};

#endif // SMALL_BLOCK_H
